This is a preliminary analysis to look at Per Capita GHG emissions and Life Expectancy at birth. It uses data from the UC Berkeley CoolClimate Map* (zip code level) and from the Healthy Places Index website (census tract level).
*Christopher M. Jones and Daniel M. Kammen, Spatial Distribution of U.S. Household Carbon Footprints Reveals Suburbanization Undermines Greenhouse Gas Benefits of Urban Population Density. Environ. Sci. Technol., 2013, dx.doi.org/10.1021/es4034364
health <- read.csv("~/GHG_leb/HPIhealthOutcomes.csv", header=T) %>%
mutate(ct10= as.character(paste0("0",geoid)))
GHG <- read.csv("~/GHG_leb/CoolClimateZips.csv", header=T, stringsAsFactors = FALSE)
datatable(health[,c(2,3,4,6,9,16)]) %>% formatRound(6,1)
datatable(GHG[,c(1,2,7,8,11,12,20,25:30)])
We have data for the whole country but can only compare to LEB within CA. In a simple way, we’ll link the tables for GHG and LEB spatially in a fairly simple way - by associating the zip code with the census tract within which its lat,lon coordinates fall. We could go back and revise this methodlogy to improve how we link these two satial units.
tracts <- st_read("~/CHVI_copy/data/shapefiles/census_tracts2010.shp") %>%
st_transform(crs = 4326) %>%
left_join(health)
## Reading layer `census_tracts2010' from data source `C:\Users\jvargo\Documents\CHVI_copy\data\shapefiles\census_tracts2010.shp' using driver `ESRI Shapefile'
## Simple feature collection with 8048 features and 13 fields
## geometry type: MULTIPOLYGON
## dimension: XY
## bbox: xmin: -373976.1 ymin: -604512.6 xmax: 539719.6 ymax: 450022.5
## epsg (SRID): NA
## proj4string: +proj=aea +lat_1=34 +lat_2=40.5 +lat_0=0 +lon_0=-120 +x_0=0 +y_0=-4000000 +datum=NAD83 +units=m +no_defs
GHGpt <- st_as_sf(GHG, coords = c("Longitude", "Latitude"), crs = 4326)
intersect <- st_intersection(x = tracts, y = GHGpt)
Now we can exmaine The per capita emissions and life expectancy together following the example of this article - see figure from the article below.
Steinberger, J.K., Roberts, J.T., Peters, G.P. and Baiocchi, G., 2012. Pathways of human development and carbon emissions embodied in trade. Nature Climate Change, 2(2), p.81.
Life expectancy, income and carbon in 3D. Three-dimensional representation of life expectancy (vertical axis), consumption-based emissions (horizontal axis) and income (color scale) in 2004. The expanded area includes the “Goldemberg Corner,” with life expectancy over 70 and less than 1 ton of carbon emissions per capita. The highest life expectancy levels are attained at a wide range of carbon emissions and incomes.
In our plot, instead of a dot representing a country, each dot represents a zip code in California.
intersect %>%
rename(transport = Transport..tCO2e.yr.,
housing = Housing..tCO2e.yr.,
food = Food..tCO2e.yr.,
goods = Goods..tCO2e.yr.,
services = Services..tCO2e.yr.,
total = Total..tCO2e.yr.) %>%
gather(transport, housing, food, goods, services, total, key = "Category",value = "emissions") %>%
filter(Category == "total") %>%
ggplot() +
geom_point(aes(y=leb, x=emissions, color=Category), alpha=I(0.05)) +
geom_smooth(aes(y=leb, x=emissions, color=Category, group= Category)) +
guides(alpha = FALSE) +
theme_fivethirtyeight() +
scale_colour_wsj() + ggtitle("PerCap CO2equiv vs. Life Expectancy") + facet_wrap(~ Category)
We can even seperate out the zip code level emissions based on the sector that they are associated with. We can see how the spread and association between emissions and LEB vary across sectors. Interestingly, most sectors and the overall total follow a pattern similar to what we see in the paper looking at global trends, particularly for goods and services. Perhaps most intersting is the direction on food, which is slightly negative showing how more carbon-intesive diets are actually worse for health, and indicating a clear win-win for attention to low-carbon diets.
intersect %>%
rename(transport = Transport..tCO2e.yr.,
housing = Housing..tCO2e.yr.,
food = Food..tCO2e.yr.,
goods = Goods..tCO2e.yr.,
services = Services..tCO2e.yr.,
total = Total..tCO2e.yr.) %>%
gather(transport, housing, food, goods, services, total, key = "Category",value = "emissions") %>%
filter(Category != "total") %>%
ggplot() +
geom_point(aes(y=leb, x=emissions, color=Category), alpha=I(0.05)) +
geom_smooth(aes(y=leb, x=emissions, color=Category, group= Category)) +
guides(alpha = FALSE) +
theme_fivethirtyeight() +
scale_colour_wsj() + ggtitle("PerCap CO2equiv vs. Life Expectancy") + facet_wrap(~ Category)